package com.yh.base.service;

import java.util.List;
import java.util.Map;

public abstract class BaseService {
    /**
     * 
     * 通用SQL查询
     *
     * @author  严华
     * @param <T>
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return [参数说明]
     * 
     * @return List<T> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     */
    public abstract <T, K, V> List<T> findList(String sqlName, Map<K, V> param);

    /**
     * 
     * 通用新增方法
     *
     * @author  严华
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return [参数说明]
     * 
     * @return Integer [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     */
    public abstract <K, V> Integer comAdd(String sqlName, Map<K, V> param);
    
    /**
     * 
     * 通用修改方法
     *
     * @author  严华
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return [参数说明]
     * 
     * @return Integer [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     */
    public abstract <K, V> Integer comMod(String sqlName, Map<K, V> param);
    
    /**
     * 
     * 通用删除方法
     *
     * @author  严华
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return [参数说明]
     * 
     * @return Integer [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     */
    public abstract <K, V> Integer comDel(String sqlName, Map<K, V> param);
    
    /**
     * 
     * 不允许在action暴露 getSqlTemplate 方法，故使用一下查询
     *
     * @author  严华
     * @param <T>
     * @param <K>
     * @param <V>
     * @param sqlName
     * @param param
     * @return [参数说明]
     * 
     * @return T [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     */
    public abstract <T, K, V> T selectOne(String sqlName, Map<K, V> param);
    
}